iT邦幫忙

2021 iThome 鐵人賽

DAY 12
1
自我挑戰組

go go let's go - golang 從0開始系列 第 12

Golang 轉生到web世界

  • 分享至 

  • xImage
  •  

Golang

因為對於web比較熟的關係,還是希望使用golang來做點web相關的事情,如果是寫php的朋友,在一開始都需要安裝apache來跑php,但如果是使用golang的話,我們就可以省略這個步驟,直接來玩看看

Golang本身就包含net/http 套件,只需要在import引用就可以,但要注意的是,如果先前都是使用golang online來練習的朋友,可能就需要先安裝golang了,尤其後面還需要建置view html檔案等,這部分就是線上編輯器無法支援的。

依照慣例直接來看個hello world吧!

package main

import (
	"fmt"
	"net/http"
)

func indexHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "hello world")
}

func main() {
	http.HandleFunc("/", indexHandler)
	http.ListenAndServe(":8000", nil)
}

然後跑一下專案 go run 之後在瀏覽器中輸入http://localhost:8000/
這裡的ListenAndServe,我寫8000是使用8000port,想改什麼數字的就自行改變,但唯一要注意程式碼與網址的數字要相同,以及有些常用的port號可能會被別的軟體之類使用(apache會遇到這種問題,但golang會不會我不確定,但目前個人猜測應該是不會受影響)。

就可以看到hello world囉
所以真的不用安裝apache

如果我們要抓路由怎麼做呢?

package main

import (
	"fmt"
	"net/http"
)

func indexHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, world!\n")
}

func echoHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, r.URL.Path)
}

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/hello", indexHandler)
	mux.HandleFunc("/", echoHandler)

	http.ListenAndServe(":8000", mux)
}

參考資料
https://pkg.go.dev/net/http


上一篇
錯誤處理
下一篇
Golang 轉生到web世界 - http套件小疑問
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言